package org.feng.util;

import org.springframework.util.StringUtils;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Objects;

/**
 * 时间工具类
 *
 * @version V1.0
 * @date: 2022年02月17日 11时38分
 */
public abstract class TimeUtil {


    private static final DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern(TimeFormatPatternEnum.DATETIME_FORMAT_PATTERN.toString());

    /**
     * String 转 LocalDateTime
     *
     * @param stringDateTime 时间字符串，格式为yyyy-MM-dd HH:mm:ss的字符串
     * @return LocalDateTime 实例
     */
    public static LocalDateTime stringToLocateDateTime(String stringDateTime) {
        if (!StringUtils.hasLength(stringDateTime)) {
            return null;
        }
        return LocalDateTime.parse(stringDateTime, DATETIME_FORMATTER);
    }


    public static String localDateTimeToString(LocalDateTime localDateTime) {
        if (Objects.isNull(localDateTime)) {
            return null;
        }

        return DATETIME_FORMATTER.format(localDateTime);
    }


    /**
     * 时间格式枚举
     */
    public enum TimeFormatPatternEnum {
        /**
         * 时间格式枚举：年月日，年月日时分秒，年月日时分秒时区
         */
        DATE_FORMAT_PATTERN("yyyy-MM-dd"),
        DATETIME_FORMAT_PATTERN("yyyy-MM-dd HH:mm:ss"),
        DATETIME_ZONE_FORMAT_PATTERN("yyyy-MM-dd HH:mm:ssZ");

        private final String format;

        TimeFormatPatternEnum(String format) {
            this.format = format;
        }

        @Override
        public String toString() {
            return format;
        }
    }
}


